home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing;
-
- import com.sun.java.accessibility.Accessible;
- import com.sun.java.accessibility.AccessibleContext;
- import com.sun.java.swing.event.EventListenerList;
- import com.sun.java.swing.event.ListDataEvent;
- import com.sun.java.swing.event.ListDataListener;
- import com.sun.java.swing.plaf.ComboBoxUI;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.ItemSelectable;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.ItemEvent;
- import java.awt.event.ItemListener;
- import java.awt.event.KeyEvent;
- import java.util.Vector;
-
- public class JComboBox extends JComponent implements ItemSelectable, ListDataListener, ActionListener, Accessible {
- protected ComboBoxModel dataModel;
- protected ListCellRenderer renderer;
- protected ComboBoxEditor editor;
- protected int maximumRowCount = 8;
- protected boolean isEditable = false;
- protected Object selectedItemReminder = null;
- protected KeySelectionManager keySelectionManager = null;
- protected String actionCommand = "comboBoxChanged";
- protected boolean lightWeightPopupEnabled = true;
- static Class class$java$awt$event$ItemListener;
- static Class class$java$awt$event$ActionListener;
-
- public JComboBox() {
- this.setModel(new DefaultComboBoxModel(this));
- this.installAncestorListener();
- this.updateUI();
- }
-
- public JComboBox(Object[] items) {
- this.setModel(new DefaultComboBoxModel(this, items));
- this.installAncestorListener();
- this.updateUI();
- }
-
- public JComboBox(ComboBoxModel aModel) {
- this.setModel(aModel);
- this.installAncestorListener();
- this.updateUI();
- }
-
- public JComboBox(Vector items) {
- this.setModel(new DefaultComboBoxModel(this, items));
- this.installAncestorListener();
- this.updateUI();
- }
-
- public void actionPerformed(ActionEvent e) {
- Object newItem = this.getEditor().getItem();
- this.getModel().setSelectedItem(newItem);
- this.getUI().hidePopup();
- }
-
- public void addActionListener(ActionListener l) {
- EventListenerList var10000 = super.listenerList;
- Class var10001 = class$java$awt$event$ActionListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("java.awt.event.ActionListener");
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
-
- class$java$awt$event$ActionListener = var10001;
- }
-
- var10000.add(var10001, l);
- }
-
- public void addItem(Object anObject) {
- this.checkDefaultComboBoxModel();
- ((DefaultComboBoxModel)this.dataModel).addObject(anObject);
- }
-
- public void addItemListener(ItemListener aListener) {
- EventListenerList var10000 = super.listenerList;
- Class var10001 = class$java$awt$event$ItemListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("java.awt.event.ItemListener");
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
-
- class$java$awt$event$ItemListener = var10001;
- }
-
- var10000.add(var10001, aListener);
- }
-
- void checkDefaultComboBoxModel() {
- if (!(this.dataModel instanceof DefaultComboBoxModel)) {
- throw new InternalError("Cannot use this method with a custom data model.");
- }
- }
-
- public void configureEditor(ComboBoxEditor anEditor, Object anItem) {
- anEditor.setItem(anItem);
- }
-
- public void contentsChanged(ListDataEvent e) {
- ComboBoxModel mod = this.getModel();
- Object newSelectedItem = mod.getSelectedItem();
- if (!this.isEditable() && mod instanceof DefaultComboBoxModel && newSelectedItem == null && this.getModel().getSize() > 0) {
- this.setSelectedIndex(0);
- } else if (this.selectedItemReminder == null) {
- if (newSelectedItem != null) {
- this.selectedItemChanged();
- }
- } else if (!this.selectedItemReminder.equals(newSelectedItem)) {
- this.selectedItemChanged();
- }
-
- if (!this.isEditable() && newSelectedItem != null) {
- boolean shouldResetSelectedItem = true;
- Object selectedItem = mod.getSelectedItem();
- int i = 0;
-
- for(int c = mod.getSize(); i < c; ++i) {
- Object o = mod.getElementAt(i);
- if (o.equals(selectedItem)) {
- shouldResetSelectedItem = false;
- break;
- }
- }
-
- if (shouldResetSelectedItem) {
- if (mod.getSize() > 0) {
- this.setSelectedIndex(0);
- } else {
- this.setSelectedItem((Object)null);
- }
- }
- }
-
- }
-
- protected KeySelectionManager createDefaultKeySelectionManager() {
- return new DefaultKeySelectionManager(this);
- }
-
- protected void fireActionEvent() {
- ActionEvent e = null;
- Object[] listeners = super.listenerList.getListenerList();
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- Object var10000 = listeners[i];
- Class var10001 = class$java$awt$event$ActionListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("java.awt.event.ActionListener");
- } catch (ClassNotFoundException var4) {
- throw new NoClassDefFoundError(((Throwable)var4).getMessage());
- }
-
- class$java$awt$event$ActionListener = var10001;
- }
-
- if (var10000 == var10001) {
- if (e == null) {
- e = new ActionEvent(this, 1001, this.getActionCommand());
- }
-
- ((ActionListener)listeners[i + 1]).actionPerformed(e);
- }
- }
-
- }
-
- protected void fireItemStateChanged(ItemEvent e) {
- Object[] listeners = super.listenerList.getListenerList();
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- Object var10000 = listeners[i];
- Class var10001 = class$java$awt$event$ItemListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("java.awt.event.ItemListener");
- } catch (ClassNotFoundException var4) {
- throw new NoClassDefFoundError(((Throwable)var4).getMessage());
- }
-
- class$java$awt$event$ItemListener = var10001;
- }
-
- if (var10000 == var10001) {
- ((ItemListener)listeners[i + 1]).itemStateChanged(e);
- }
- }
-
- }
-
- public AccessibleContext getAccessibleContext() {
- if (super.accessibleContext == null) {
- super.accessibleContext = new AccessibleJComboBox(this);
- }
-
- return super.accessibleContext;
- }
-
- public String getActionCommand() {
- return this.actionCommand;
- }
-
- public ComboBoxEditor getEditor() {
- return this.editor;
- }
-
- public Object getItemAt(int index) {
- return this.dataModel.getElementAt(index);
- }
-
- public int getItemCount() {
- return this.dataModel.getSize();
- }
-
- public KeySelectionManager getKeySelectionManager() {
- return this.keySelectionManager;
- }
-
- public int getMaximumRowCount() {
- return this.maximumRowCount;
- }
-
- public ComboBoxModel getModel() {
- return this.dataModel;
- }
-
- public ListCellRenderer getRenderer() {
- return this.renderer;
- }
-
- public int getSelectedIndex() {
- Object sObject = this.dataModel.getSelectedItem();
- int i = 0;
-
- for(int c = this.dataModel.getSize(); i < c; ++i) {
- Object obj = this.dataModel.getElementAt(i);
- if (obj.equals(sObject)) {
- return i;
- }
- }
-
- return -1;
- }
-
- public Object getSelectedItem() {
- return this.dataModel.getSelectedItem();
- }
-
- public Object[] getSelectedObjects() {
- Object selectedObject = this.getSelectedItem();
- if (selectedObject == null) {
- return new Object[0];
- } else {
- Object[] result = new Object[1];
- result[0] = selectedObject;
- return result;
- }
- }
-
- public ComboBoxUI getUI() {
- return (ComboBoxUI)super.ui;
- }
-
- public String getUIClassID() {
- return "ComboBoxUI";
- }
-
- public void hidePopup() {
- this.getUI().hidePopup();
- }
-
- public void insertItemAt(Object anObject, int index) {
- this.checkDefaultComboBoxModel();
- ((DefaultComboBoxModel)this.dataModel).insertObjectAt(anObject, index);
- }
-
- protected void installAncestorListener() {
- ((JComponent)this).addAncestorListener(new 1(this));
- }
-
- public void intervalAdded(ListDataEvent e) {
- this.contentsChanged(e);
- }
-
- public void intervalRemoved(ListDataEvent e) {
- this.contentsChanged(e);
- }
-
- public boolean isEditable() {
- return this.isEditable;
- }
-
- public boolean isFocusTraversable() {
- return this.getUI().isFocusTraversable();
- }
-
- public boolean isLightWeightPopupEnabled() {
- return this.lightWeightPopupEnabled;
- }
-
- public boolean isOpaque() {
- return true;
- }
-
- public void processKeyEvent(KeyEvent e) {
- if (e.getKeyCode() == 9) {
- this.hidePopup();
- }
-
- super.processKeyEvent(e);
- }
-
- public void removeActionListener(ActionListener l) {
- EventListenerList var10000 = super.listenerList;
- Class var10001 = class$java$awt$event$ActionListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("java.awt.event.ActionListener");
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
-
- class$java$awt$event$ActionListener = var10001;
- }
-
- var10000.remove(var10001, l);
- }
-
- public void removeAllItems() {
- this.checkDefaultComboBoxModel();
- ((DefaultComboBoxModel)this.dataModel).removeAllObjects();
- if (!this.isEditable()) {
- this.setSelectedItem((Object)null);
- }
-
- }
-
- public void removeItem(Object anObject) {
- this.checkDefaultComboBoxModel();
- int index = ((DefaultComboBoxModel)this.dataModel).getIndexOf(anObject);
- ((DefaultComboBoxModel)this.dataModel).removeObject(anObject);
- if (!this.isEditable() && this.dataModel.getSize() > 0 && index < this.dataModel.getSize()) {
- this.setSelectedIndex(index);
- }
-
- }
-
- public void removeItemAt(int anIndex) {
- this.checkDefaultComboBoxModel();
- ((DefaultComboBoxModel)this.dataModel).removeObjectAt(anIndex);
- }
-
- public void removeItemListener(ItemListener aListener) {
- EventListenerList var10000 = super.listenerList;
- Class var10001 = class$java$awt$event$ItemListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("java.awt.event.ItemListener");
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
-
- class$java$awt$event$ItemListener = var10001;
- }
-
- var10000.remove(var10001, aListener);
- }
-
- protected void selectedItemChanged() {
- if (this.selectedItemReminder != null) {
- this.fireItemStateChanged(new ItemEvent(this, 701, this.selectedItemReminder, 2));
- }
-
- this.selectedItemReminder = this.getModel().getSelectedItem();
- if (this.selectedItemReminder != null) {
- this.fireItemStateChanged(new ItemEvent(this, 701, this.selectedItemReminder, 1));
- }
-
- this.fireActionEvent();
- }
-
- public boolean selectWithKeyChar(char keyChar) {
- if (this.keySelectionManager == null) {
- this.keySelectionManager = this.createDefaultKeySelectionManager();
- }
-
- int index = this.keySelectionManager.selectionForKey(keyChar, this.getModel());
- if (index != -1) {
- this.setSelectedIndex(index);
- return true;
- } else {
- return false;
- }
- }
-
- public void setActionCommand(String aCommand) {
- this.actionCommand = aCommand;
- }
-
- public void setEditable(boolean aFlag) {
- boolean didChange = aFlag != this.isEditable;
- this.isEditable = aFlag;
- if (didChange) {
- ((JComponent)this).firePropertyChange("editable", !this.isEditable, this.isEditable);
- }
-
- }
-
- public void setEditor(ComboBoxEditor anEditor) {
- ComboBoxEditor oldEditor = this.editor;
- if (this.editor != null) {
- this.editor.removeActionListener(this);
- }
-
- this.editor = anEditor;
- if (this.editor != null) {
- this.editor.addActionListener(this);
- }
-
- ((JComponent)this).firePropertyChange("editor", oldEditor, this.editor);
- }
-
- public void setEnabled(boolean b) {
- super.setEnabled(b);
- ((JComponent)this).firePropertyChange("enabled", !((Component)this).isEnabled(), ((Component)this).isEnabled());
- }
-
- public void setKeySelectionManager(KeySelectionManager aManager) {
- this.keySelectionManager = aManager;
- }
-
- public void setLightWeightPopupEnabled(boolean aFlag) {
- this.lightWeightPopupEnabled = aFlag;
- }
-
- public void setMaximumRowCount(int count) {
- int oldCount = this.maximumRowCount;
- this.maximumRowCount = count;
- ((JComponent)this).firePropertyChange("maximumRowCount", oldCount, this.maximumRowCount);
- }
-
- public void setModel(ComboBoxModel aModel) {
- ComboBoxModel oldModel = this.dataModel;
- if (this.dataModel != null) {
- this.dataModel.removeListDataListener(this);
- }
-
- this.dataModel = aModel;
- ((JComponent)this).firePropertyChange("model", oldModel, this.dataModel);
- this.dataModel.addListDataListener(this);
- ((Container)this).invalidate();
- }
-
- public void setRenderer(ListCellRenderer aRenderer) {
- ListCellRenderer oldRenderer = this.renderer;
- this.renderer = aRenderer;
- ((JComponent)this).firePropertyChange("renderer", oldRenderer, this.renderer);
- ((Container)this).invalidate();
- }
-
- public void setSelectedIndex(int anIndex) {
- int size = this.dataModel.getSize();
- if (anIndex >= 0 && anIndex < size) {
- this.setSelectedItem(this.dataModel.getElementAt(anIndex));
- } else {
- throw new IllegalArgumentException("setSelectedIndex: " + anIndex + " out of bounds");
- }
- }
-
- public void setSelectedItem(Object anObject) {
- this.dataModel.setSelectedItem(anObject);
- }
-
- public void setUI(ComboBoxUI ui) {
- super.setUI(ui);
- }
-
- public void showPopup() {
- this.getUI().showPopup();
- }
-
- public void updateUI() {
- this.setUI((ComboBoxUI)UIManager.getUI(this));
- }
- }
-